Upload working version#1
Conversation
| ) | ||
|
|
||
| func main() { | ||
| go func() { |
There was a problem hiding this comment.
Это плохой патерн, тут у нас идет все по очереди: проинициализоровать БД, потом запустить сервер, а так подход дает асинхронность, которая тут и не нужна
| func main() { | ||
| go func() { | ||
| err := db.InitDB() | ||
| if err != nil { |
There was a problem hiding this comment.
После проверки на ошибки нужно закрыть БД через defer
| "github.com/ArtyomGaribyan/Task-Scheduler/pkg/db" | ||
| ) | ||
|
|
||
| func checkTask (task *db.Task) error { |
There was a problem hiding this comment.
Не очень понятно зачем тут ссылка, Task - маленькая структура, которую проще скопировать, чем по ссылке передавать
| } else { | ||
| _, err := time.Parse(db.DateLayout, task.Date) | ||
| if err != nil { | ||
| return fmt.Errorf("invalid date format: %v", err) |
There was a problem hiding this comment.
При оборачивании нужно использовать %w (wrap), а просто при выводе в консоль %v
| return fmt.Errorf("invalid date format: %v", err) | |
| return fmt.Errorf("invalid date format: %w", err) |
|
|
||
| func HandleTasks(w http.ResponseWriter, r *http.Request) { | ||
| tasks, err := db.Tasks(50) | ||
| if err != nil { |
There was a problem hiding this comment.
Теряешь сообщение с ошибкой, сложно будет дебажить ошибки.
Можно просто вывести в лог.
| }) | ||
| } | ||
|
|
||
| func UpdateTaskHandler(task *db.Task) error { |
There was a problem hiding this comment.
В этих функциях такие же проблемы
- Не очень понятно зачем задача по ссылке
- Операции с разными кодами возврата для клиента
|
|
||
| days, err := strconv.Atoi(repeatSplitted[1]) | ||
| if err != nil { | ||
| return time.Time{}, fmt.Errorf("invalid date format: %v", err) |
There was a problem hiding this comment.
При оборачивании нужно использовать %w (wrap), а просто при выводе в консоль %v
| return time.Time{}, fmt.Errorf("invalid date format: %v", err) | |
| return time.Time{}, fmt.Errorf("invalid date format: %w", err) |
|
|
||
| func AddTask(task *Task) (int64, error) { | ||
| var id int64 | ||
| db, err := sql.Open(tests.SQL, tests.DBFile) |
There was a problem hiding this comment.
У тебя открывается коннект к базе при каждом вызове функции, это не очень хорошо.
Нужно 1 раз создать коннект при старте программы и использовать его для всех запросов.
| return []*Task{}, err | ||
| } | ||
| tasks = append(tasks, &task) | ||
| } |
There was a problem hiding this comment.
После цикла нужно проверить курсор на наличие ошибок
No description provided.